#ifndef __ESP32MCPWMMOTOR_H__
#define __ESP32MCPWMMOTOR_H__
//作用：防止头文件被重复包含，避免编译错误
#include "Arduino.h"//提供 Arduino 核心功能。
#include <stdio.h> //标准输入输出函数。

#include "esp_system.h"//
#include "esp_attr.h"//ESP32 系统级功能和属性定义。


#include "driver/mcpwm.h"//ESP32 MCPWM（电机控制 PWM）驱动接口
#include "soc/mcpwm_reg.h"//
#include "soc/mcpwm_struct.h"
//MCPWM 寄存器和硬件结构定义


class Esp32McpwmMotor
{
private:
    //储存四个电机的速度值
    int16_t speeds[4]{0, 0};
    // // 记录电机是否已初始化
    bool mMotorAttached[4]{false, false, false, false};

public:
    //构造和析构
    Esp32McpwmMotor() = default;
    ~Esp32McpwmMotor() = default;
    //初始化电机
    void attachMotor(uint8_t id, uint8_t gpioIn1, uint8_t gpioIn2);
    //gpioIn1 和 gpioIn2：控制电机方向的 GPIO 引脚（如 H 桥输入引脚）
    //停止电机转动
    void stopMotor(int8_t motorId = -1);
    //更新电机速度
    void updateMotorSpeed(int8_t id, int16_t pwmValue);
    //id：电机编号（0-3）
    //pwmValue：PWM 占空比值（例如 -255 到 255，负值表示反转）。
};

#endif // __ESP32MCPWMMOTOR_H__